一直没弄明白URL、URI以及ServletPath之间的区别,今天看到了一篇博客,所以转载过来记录一下。

假设现在有一个名为JavaWeb的项目,其中有一个名为TestServlet的serlvet,其doGet方法为:

1
2
3
4
5
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("URL:"+request.getRequestURL().toString());
System.out.println("URI:"+request.getRequestURI());
System.out.println("ServletPath:"+request.getServletPath());
}

现在在浏览器中发送到TestServlet的请求,发现控制台输出如下:

1
2
3
URL: http://localhost:8080/JavaWeb/TestServlet
URI: /JavaWeb/TestServlet
ServletPath: /TestServlet

通过上面的三个输出相信你能理解三者的区别了!